﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Negocios;

namespace DigitalTVWS
{
    // NOTE: If you change the class name "ServiceCompra" here, you must also update the reference to "ServiceCompra" in Web.config.
    public class ServiceCompra : IServiceCompra
    {
        public void DoWork()
        {

        }

        public bool inserir(CompositeCompra compra)
        {
            try
            {
                FaturaBO faturaBO = new FaturaBO();
                FaturaBOMetodos faturaBOMetodos = new FaturaBOMetodos();
                ClienteBO cliente = new ClienteBO();
                ProgramacaoBO programacao = new ProgramacaoBO();

                cliente.Cpf = compra.Cliente;
                programacao.Id = compra.Programacao;

                faturaBO.Id_Compra = compra.Id_Compra;
                faturaBO.Cliente = cliente;
                faturaBO.Programacao = programacao;
                faturaBO.Preco = compra.Preco;
                faturaBO.Data = compra.Data;

                faturaBOMetodos.inserir(faturaBO);

            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel adicionar a compra a lista: " + ex.Message);
                return false;
            }

            return true;
        }

        public bool remover(int idCompra)
        {
            try
            {
                FaturaBO faturaBO = new FaturaBO();
                FaturaBOMetodos faturaBOMetodos = new FaturaBOMetodos();

                faturaBO.Id_Compra = idCompra;
                faturaBOMetodos.remover(faturaBO);

            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel remover a compra a lista.");
                return false;
            }

            return true;
        }

        public List<CompositeCompra> ConsultarPorCliente(string cliente)
        {
            try
            {

                FaturaBOMetodos faturaBOMetodos = new FaturaBOMetodos();
                List<FaturaBO> lFaturaBO = new List<FaturaBO>();
                List<CompositeCompra> lCompositeCompra = new List<CompositeCompra>();

                lFaturaBO = faturaBOMetodos.ConsultarPorCliente(cliente);

                foreach (FaturaBO faturaBO in lFaturaBO)
                {
                    CompositeCompra compositeCompra = new CompositeCompra();
                    compositeCompra.Id_Compra = faturaBO.Id_Compra;
                    compositeCompra.Cliente = faturaBO.Cliente.Cpf;
                    compositeCompra.Programacao = faturaBO.Programacao.Id;
                    compositeCompra.Preco = faturaBO.Preco;
                    compositeCompra.Data = faturaBO.Data;
                    lCompositeCompra.Add(compositeCompra);
                }

                return lCompositeCompra;
            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel realizar a consulta: " + ex.Message);
                
            }

            
        }

    }
}
